<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Data Definition Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Data_Definition_Language"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Data_Definition_Language rootpage-Data_Definition_Language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Data Definition Language</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Die <b>Data Definition Language</b> (<b>DDL</b>; <span style="font-style:normal;font-weight:normal"><a href="Deutsche_Sprache" title="Deutsche Sprache">deutsch</a></span> <span lang="de-Latn">Datendefinitionssprache</span><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>) ist ein Teil einer <a href="Datenbanksprache" title="Datenbanksprache">Datenbanksprache</a>, der verwendet wird, um Datenstrukturen und verwandte Elemente zu beschreiben, zu ändern oder zu entfernen. Ursprünglich bezog sich DDL auf <a href="Datenbanksystem" class="mw-redirect" title="Datenbanksystem">Datenbanksysteme</a>, der Begriff wird aber heute auch in anderen Zusammenhängen verwendet. Als Datenbanksprache ist DDL die <i>Datenbeschreibungssprache</i> einer Datenbank.
</p><p>Es existieren sehr unterschiedliche Ausprägungen der DDL (abhängig vom Verwendungszweck), Beispiele:
</p>
<ul><li>In den historischen <a href="Information_Management_System" title="Information Management System">IMS</a>-Datenbanken werden die Datenstrukturen und deren logische Sichten in Form einer höheren Assemblersprache definiert.
<dl><dd><i>Beispiel:</i> … <code style="white-space:nowrap">SEGM NAME=PROJECT,PARENT=FIRM,BYTES=45 FIELD NAME=(PROJNO,SEQ,U),BYTES=6,START=1</code> …</dd></dl></li>
<li>In <a href="SQL" title="SQL">SQL</a> liegt sie (neben <a href="Data_Manipulation_Language" title="Data Manipulation Language">DML</a> und <a href="Data_Control_Language" title="Data Control Language">DCL</a>) in Form englischer Befehlsklauseln vor.
<dl><dd><i>Beispiel:</i> <code style="white-space:nowrap" class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">PROJECT</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">PROJNO</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="p">,</span></code> …</dd></dl></li>
<li><a href="XML_Schema" title="XML Schema">XML Schema</a> ist eine DDL zur Beschreibung der Struktur von XML-Dokumenten.</li></ul>
<p>Einige Software-Hersteller weisen auch Berechtigungselemente (z. B. <code>GRANT</code>) dem DDL-Begriff zu, diese gehören allerdings in der Theorie zur <a href="Data_Control_Language" title="Data Control Language">Data Control Language</a>.
</p><p>Zu <i>unterscheiden</i> ist eine DDL vom Begriff „<a href="Deklaration_(Programmierung)" title="Deklaration (Programmierung)">Deklaration</a>“: Während eine DDL im Allgemeinen zur Festlegung der Struktur von Daten in einem <a href="Datenbank" title="Datenbank">DBMS</a> dient, wird das Festlegen der Format- und <a href="Datenstruktur" title="Datenstruktur">Strukturangaben</a> für hauptspeicher-intern zu verarbeitende Daten – im <a href="Quelltext" title="Quelltext">Quelltext</a> eines <a href="Computerprogramm" title="Computerprogramm">Computerprogramms</a>, gemäß der <a href="Syntax" title="Syntax">Syntax</a> einer <a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a> – als „Deklaration“ (zum Teil auch als Definition oder Spezifikation) bezeichnet.
</p>
<div class="mw-heading mw-heading2"><h2 id="SQL">SQL</h2></div>
<p>In der praktisch wichtigen <a href="SQL" title="SQL">Structured Query Language</a> lautet die Syntax wie folgt:
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Relation</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">(</span><span class="n">Attribut</span><span class="o">-</span><span class="n">Definition</span><span class="w"> </span><span class="p">[</span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="p">])</span><span class="o">+</span>
<span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="k">FOREIGN</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">Attribut</span><span class="o">+</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">REFERENCES</span><span class="w"> </span><span class="n">Relation</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">Attribut</span><span class="o">+</span><span class="w"> </span><span class="p">)]</span><span class="w"> </span><span class="p">)</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Relation</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Relation</span><span class="w"> </span><span class="k">Alter</span><span class="o">-</span><span class="n">Definition</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">INDEX</span><span class="w"> </span><span class="k">Index</span><span class="o">-</span><span class="n">Name</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">Relation</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">Attribut</span><span class="o">+</span><span class="w"> </span><span class="p">)</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">INDEX</span><span class="w"> </span><span class="k">Index</span><span class="o">-</span><span class="n">Name</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">Sicht</span><span class="w"> </span><span class="p">[(</span><span class="w"> </span><span class="n">Attribut</span><span class="o">+</span><span class="w"> </span><span class="p">)]</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">SFW</span><span class="o">-</span><span class="n">Block</span><span class="w"> </span><span class="p">[</span><span class="k">WITH</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="k">OPTION</span><span class="p">]</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">Sicht</span>
</pre></div>
<ul><li><code>PRIMARY KEY</code> und <code>FOREIGN KEY</code> sind Teil der SQL-89 IDL bzw. SQL-92 und werden von manchen Datenbanksystemen nicht unterstützt.</li>
<li>Die Attribut-Definition enthält den Namen des Attributes, den Datentyp, sowie optionale Angaben wie <code><a href="Nullwert" title="Nullwert">NOT NULL</a></code>. In SQL-92 können benutzerdefinierte Wertebereiche sowie Defaultwerte angegeben werden.</li>
<li>Bei <code>CREATE TABLE</code> können ab SQL-92 außerdem mittels der <code>CHECK</code>-Klausel noch Integritätsbedingungen bei den Attributen oder für die Tabelle angegeben werden.</li>
<li>Die Alter-Definition ist <code>ADD <i>Attribut-Definition</i></code>. In SQL-92 gibt es noch <code>ALTER <i>Attribut</i> <i>Default-Wert</i></code> oder <code>DROP <i>Attribut</i></code>. Da SQL-92 sehr restriktiv bezüglich der <code>ALTER</code>-Anweisung ist, ist dies eine der Anweisungen, die von den Herstellern universell erweitert wurde, so dass beliebige Änderungen möglich sind wie durch eine Folge von <code>DROP</code> und <code>ADD</code>-Anweisungen.</li>
<li>Bei der Definition einer Sicht können neue Attributnamen vergeben werden. <i>SFW-Block</i> ist eine beliebige SQL-Abfrage, <code>WITH CHECK OPTION</code> gibt an, ob gewisse Änderungsoperationen erlaubt sein sollen (vgl. <a href="Sicht_(Datenbank)" title="Sicht (Datenbank)">Sichten</a>). Eine <code>ORDER BY</code> Klausel ist in Sichtdefinitionen nicht zulässig, da Sichten wieder Relationen sind, und Relationen sind (Multi-)Mengen, also per Definition nicht sortiert.</li>
<li>Die <code>CREATE</code>-Anweisung wird in modernen DBMS dazu benutzt, außer Relationen, Indizes und Sichten alle möglichen anderen Objekte zu kreieren.</li>
<li>Der SQL-Standard definiert Indizes überhaupt nicht, so dass die entsprechenden <code>CREATE INDEX</code> und <code>DROP INDEX</code> Anweisungen immer produktspezifische Erweiterungen sind. Allerdings verwenden die meisten <a href="DBMS" class="mw-redirect" title="DBMS">DBMS</a> die gleiche oder eine sehr ähnliche Syntax.</li>
<li>Mit <code>WITH CHECK OPTION</code> kann eine <a href="Sicht_(Datenbank)" title="Sicht (Datenbank)">View</a> (virtuelle Tabelle) definiert werden, um somit eine Kontrolle über die Veränderung der Daten zu ermöglichen, welche in einer View dargestellt werden und auch bearbeitet werden können. Durch diese Angabe wird festgelegt, dass Änderungen der View, die den in ihr nicht sichtbaren Teil einer Relation beeinflussen, in einem Test anhand der durch <code>WHERE</code> angegebenen Parameter erkannt und abgewiesen werden.</li></ul>
<p><i>Beispiele:</i>
</p>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Student</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="n">MatrNr</span><span class="w"> </span><span class="nb">INT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="p">,</span>
<span class="w"> </span><span class="n">Name</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span>
</pre></div>
<dl><dd>Erzeugt die Tabelle namens <i>Student</i> mit den Spalten <i>MatrNr</i> und <i>Name</i>, wobei <i>MatrNr</i> der <a href="Prim%C3%A4rschl%C3%BCssel" class="mw-redirect" title="Primärschlüssel">Primärschlüssel</a> ist und in keiner der Spalten <a href="Nullwert" title="Nullwert">leere Felder</a> erlaubt sind.</dd></dl>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Student</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="n">Vorname</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">35</span><span class="p">)</span>
</pre></div>
<dl><dd>Definiert eine neue Spalte namens <i>Vorname</i> in der Tabelle <i>Student</i>.</dd></dl>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">Student</span>
</pre></div>
<dl><dd>Löscht die gesamte Tabelle <i>Student</i>.</dd></dl>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">INDEX</span><span class="w"> </span><span class="n">idx_Name</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">Student</span><span class="w"> </span><span class="p">(</span><span class="n">Name</span><span class="p">)</span>
</pre></div>
<dl><dd>Legt einen <a href="Datenbankindex" title="Datenbankindex">Index</a> auf die Spalte <i>Name</i> der Tabelle <i>Student</i>. Der Index bekommt die Bezeichnung <i>idx_Name</i> und beschleunigt die Suche nach Datensätzen in der Tabelle <i>Student</i>, wenn der <i>Name</i> als Suchkriterium angegeben wird.</dd></dl>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">index</span><span class="w"> </span><span class="n">idx_Name</span>
</pre></div>
<dl><dd>Löscht den Index <i>idx_Name</i>.</dd></dl>
<div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">alte_Freunde</span>
<span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">Name</span><span class="p">,</span><span class="w"> </span><span class="n">Vorname</span><span class="p">,</span><span class="w"> </span><span class="n">Wohnort</span><span class="p">,</span><span class="w"> </span><span class="n">Geburtstag</span>
<span class="k">FROM</span><span class="w"> </span><span class="n">Freunde</span>
<span class="k">WHERE</span><span class="w"> </span><span class="n">Geburtstag</span><span class="w"> </span><span class="o"><=</span><span class="w"> </span><span class="s1">'1-JAN-1970'</span>
<span class="k">WITH</span><span class="w"> </span><span class="k">CHECK</span><span class="w"> </span><span class="k">OPTION</span><span class="p">;</span>
</pre></div>
<dl><dd>Zeigt nur Freunde an, die vor dem 1. Januar 1970 geboren wurden und verhindert die Änderung auf Werte größer als der 1. Januar 1970 sowie das Neuanlegen eines Datensatzes mit einem ungültigen Wert.</dd></dl>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Data_Control_Language" title="Data Control Language">Data Control Language</a></li>
<li><a href="Data_Manipulation_Language" title="Data Manipulation Language">Data Manipulation Language</a></li>
<li><a href="Transaction_Control_Language" title="Transaction Control Language">Transaction Control Language</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.geoinformatik.uni-rostock.de/einzel.asp?ID=434">Datendefinitionssprache</a>, Geoinformatik Lexikon, Agrar- und Umweltwissenschaftliche Fakultät – Universität Rostock</span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2026-01-12" href="https://de.wikipedia.org/wiki/?title=Data_Definition_Language&oldid=263260066">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>